有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在java代码中生成安全的SQL

如何编写类似SQL(MySQL)的PreparedStatement,例如转义,以避免SQL注入和genearte安全的SQL语句

有没有现成的Java代码可以做到这一点

真实场景: 前端输入作为列值组成安全SQL(“where”部分),后端指定的是表名和列名


共 (1) 个答案

  1. # 1 楼答案

    有一些SQL构建器,通常它们会跟踪所有参数并构建PreparedStatement。甚至可以考虑不仅提供参数值,还提供参数名称,这样就可以将其用作真正的PreparedStatement

    您可以从Spring创建JdbcTemplate。或标准API

    如果你想建立自己的研究,你也可以探索逃跑

    (研究)还考虑禁止Unicode BIDI黑客与LTR(^ {< CD1>})和RTL(^ {< CD2>}):通过使用右到左控件,可以模糊编辑器中看似OK的SQL,但做一些恶意的不同。您可以要求字符不能出现在字符串中,但也必须转义:\\u200F(不过这是书呆子或内部人士的事情,您的SQL必须已经处于敏感点。)

    SQL方言很重要;名称等的倒勾(MySQL)或双引号(标准)

    还有Apache的commonlang^{}